module ecore.ecore;

class ModelElement
{
	string Name;
}

class Package : ModelElement
{
	Classifier classifiers;
}

class Classifier : ModelElement
{}

class Class : Classifier
{
	Class[] superTypes;
	Reference[] references;
	AttributeBase[] attributes;
}

class StructuralFeature
{
	Class container;
}

class Reference : StructuralFeature
{
	Class type;
}

abstract class AttributeBase : Classifier
{}

class Attribute(DataType) : StructuralFeature
{
	DataType type;
}
